CAPTOR FUND MANAGEMENT
An introduction to the openseries Python package
First we set it all up
from openseries.frame import OpenFrame
from openseries.series import OpenTimeSeries
from plotly.offline import init_notebook_mode
from plotly.offline import iplot
init_notebook_mode()
Here we fetch NAV (price per unit) for some of the Captor mutual funds
basket = OpenFrame(
[
OpenTimeSeries.from_open_nav(isin="SE0009807308"),
OpenTimeSeries.from_open_nav(isin="SE0011337195"),
OpenTimeSeries.from_open_nav(isin="SE0011670843"),
], weights=[
0.25,
0.25,
0.50])
basket = basket.trunc_frame().to_cumret()
We then make a portfolio of the funds based on the provided weights
portfolio = OpenTimeSeries.from_df(basket.make_portfolio("Portfolio"))
basket = basket.add_timeseries(portfolio)
And create a Plotly plot of all the data
figure, _ = basket.plot_series(tick_fmt=".1%", auto_open=False, output_type="div")
We display the plot in the notebook
figure = figure.update_layout(legend=dict(yanchor="bottom", y=-0.22, xanchor="right", x=0.98, orientation="h"))
iplot(figure, link_text="")
Here we calculate and display a Pandas Dataframe with some analyses
df = basket.all_properties(properties=[
"arithmetic_ret",
"vol",
"ret_vol_ratio",
"sortino_ratio",
"worst_month",
"cvar_down",
"first_indices",
"last_indices",
]
)
df.columns = df.columns.droplevel(level=1)
formats = [
"{:.2%}",
"{:.2%}",
"{:.2f}",
"{:.2f}",
"{:.2%}",
"{:.2%}",
"{:%Y-%m-%d}",
"{:%Y-%m-%d}",
]
for item, f in zip(df.index, formats):
df.loc[item] = df.loc[item].apply(
lambda x: x if isinstance(x, str) else f.format(x)
)
df
| Captor Iris Bond | Captor Dahlia Green Bond | Captor Scilla Global Equity | Portfolio | |
|---|---|---|---|---|
| Arithmetic return | -3.04% | -1.71% | 6.55% | 2.09% |
| Volatility | 6.14% | 3.14% | 12.92% | 7.12% |
| Return vol ratio | -0.49 | -0.55 | 0.51 | 0.29 |
| Sortino ratio | -0.70 | -0.73 | 0.67 | 0.39 |
| Worst month | -6.49% | -4.83% | -12.25% | -7.54% |
| CVaR 95.0% | -0.92% | -0.54% | -2.04% | -1.13% |
| first indices | 2019-02-12 | 2019-02-12 | 2019-02-12 | 2019-02-12 |
| last indices | 2022-08-04 | 2022-08-04 | 2022-08-04 | 2022-08-04 |
Thank you for listening